package com.origin.society.manager

import android.content.Context
import android.text.TextUtils
import android.util.Log
import com.umeng.commonsdk.UMConfigure
import com.umeng.umverify.UMResultCode
import com.umeng.umverify.UMVerifyHelper
import com.umeng.umverify.listener.UMTokenResultListener
import com.umeng.umverify.model.UMTokenRet

object UMManager {

    private var APP_KEY = "";
    private var SECRET_KEY = ""

    fun setAppKey(appKey: String) {
        APP_KEY = appKey
    }

    fun setSecretKey(secretKey: String) {
        SECRET_KEY = secretKey
    }


    fun preInit(context: Context, channel: String, isShowLog: Boolean): UMVerifyHelper {

        if (TextUtils.isEmpty(APP_KEY)) {
            throw java.lang.Exception("APP_KEY 没有设置")
        }

        if (TextUtils.isEmpty(SECRET_KEY)) {
            throw java.lang.Exception("SECRET_KEY 没有设置")
        }

        // 为保证您的在集成【友盟+】统计SDK之后，能够满足工信部相关合规要求，您应确保在App安装后首次冷启动时，在Applicaiton.onCreate函数中调用预初始化函数UMConfigure.preInit()，并弹出隐私授权弹窗给您的App用户。
        UMConfigure.preInit(context, APP_KEY, channel)
        UMConfigure.setLogEnabled(isShowLog)
        // 确保App首次冷启动时，在用户阅读您的《隐私政策》并取得用户授权之后，才调用正式初始化函数UMConfigure.init()初始化统计SDK，此时SDK才会真正采集设备信息并上报数据。反之，如果用户不同意《隐私政策》授权，则不能调用UMConfigure.init()初始化函数。
        UMConfigure.init(context, APP_KEY, channel, UMConfigure.DEVICE_TYPE_PHONE, "")
        val authHelper: UMVerifyHelper = UMVerifyHelper.getInstance(context, object :
            UMTokenResultListener {
            override fun onTokenSuccess(p0: String?) {
                Log.e("UmengManager", "获取token成功：$p0")
            }

            override fun onTokenFailed(p0: String?) {
                Log.e("UmengManager", "获取token失败：$p0")
            }

        })
        authHelper.setLoggerEnable(true)
        authHelper.setAuthSDKInfo(SECRET_KEY)
        return authHelper;
    }

    interface UMVerifyToken {
        fun getUMMobileToken(token: String);
    }

    fun getLoginToken(helper: UMVerifyHelper, context: Context, umVerifyToken: UMVerifyToken) {
        helper.checkEnvAvailable(UMVerifyHelper.SERVICE_TYPE_LOGIN)
        helper.setAuthListener(object : UMTokenResultListener {
            override fun onTokenSuccess(s: String) {

                try {
                    val pTokenRet = UMTokenRet.fromJson(s)
                    if (UMResultCode.CODE_SUCCESS == pTokenRet.code) {
                        val token = pTokenRet.token
                        umVerifyToken.getUMMobileToken(token)

                    }
                } catch (e: java.lang.Exception) {
                    e.printStackTrace()
                }

            }

            override fun onTokenFailed(s: String?) {
                Log.e("UmengManager", "获取token失败：$s ")
            }

        })
        helper.getLoginToken(context, 5000);

    }
}